package com.wzy.dynamicProxy.util;

import com.wzy.staticProxy.IUserDao;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class ProxyFactory {

    public static IUserDao Builder(Class classFile) throws IllegalAccessException, InstantiationException {
        //1.创建被监控的实例对象
        IUserDao obj = (IUserDao) classFile.newInstance();
        //2.创建一个调用处理类对象
        InvocationHandler invocation = new Invaction(obj);
        //3.向jvm申请负责监控  obj对象指定行为 的监控对象(代理对象)
        /*
         * 第一个参数loader:目标对象在内存中真实地址
         * 第一个参数interfaces:目标对象实现的接口
         * 第一个参数InvocationHandler： 调用处理类对象
         */
        return (IUserDao) Proxy.newProxyInstance(obj.getClass().getClassLoader(),obj.getClass().getInterfaces(),invocation);
    }
}
